package com.manager.seat.security;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author HP
 * @data 2020-12-14
 * 注册拦截器
 * 新建配置类继承WebMvcConfigurerAdapter类，重写addInterceptors方法
 * 既然要增加自己的拦截器，那当然要得到springboot加入拦截器的入口，然后把我们自己写的拦截器也注册到springboot中让其起作用
 * 需要加入@Configuration注解，在springboot启动的时候就会该配置类就会被扫描并加载，从而将我们的拦截器注册进去。这时候的拦截器已经可以正常工作了
 */
@Configuration
@Slf4j
public class WebAppConfig implements WebMvcConfigurer {

    private AuthInterceptor authInterceptor;

    @Autowired
    public void setRequestHeaderContextRequestHeaderInterceptor(AuthInterceptor authInterceptor) {
        this.authInterceptor = authInterceptor;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        log.info("111111111111111111");
        //注册自己的拦截器并设置拦截的请求路径
        registry.addInterceptor(authInterceptor)
                .addPathPatterns("/**") //拦截的路径
                .excludePathPatterns("/spring-boot/user/**"); //排除的路径
    }

    /**
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //配置方式就是实现WebMvcConfigurer, 将配置文件中文件路径也当做项目的的静态资源路径
        //项目中的资源是使用classpath:/开头，而本地文件夹需要使用file:/ 开头，使用文件协议加载文件
        registry.addResourceHandler("/**").addResourceLocations(
                "classpath:/META-INF/resources/",
                "classpath:/resources/",
                "classpath:/static/",
                "classpath:/public/",
                "classpath:/webapp/");

    }

}
